import request from '@/utils/request';

/**
 * 获取图形验证码
 * @returns {Promise} 返回包含验证码图片的 base64 字符串和验证码Key
 */
export function getCaptcha() {
  return request({
    url: '/user/graphicsCode',
    method: 'post',
  });
}

/**
 * 发送邮箱验证码
 * @param {Object} data 邮箱信息
 * @param {string} data.email 用户邮箱
 * @returns {Promise} 发送结果
 */
export function sendEmailVerifyCode(data) {
  return request({
    url: '/user/email/code',
    method: 'post',
    data
  });
}

/**
 * 用户登录
 * @param {Object} data 登录信息
 * @param {string} data.username 用户名
 * @param {string} data.password 密码
 * @param {string} data.captcha 验证码
 * @param {string} data.captchaId 验证码ID
 * @returns {Promise} 登录结果，包含用户信息和 token
 */
export function login(data) {
  return request({
    url: '/user/login',
    method: 'post',
    data
  });
}

/**
 * 用户注册
 * @param {Object} data 注册信息
 * @param {string} data.username 用户名
 * @param {string} data.password 密码
 * @param {string} data.confirmPassword 确认密码
 * @param {string} data.email 邮箱
 * @param {string} data.emailCode 邮箱验证码
 * @returns {Promise} 注册结果，包含用户信息和 token
 */
export function register(data) {
  return request({
    url: '/user/createUser',
    method: 'post',
    data
  });
}

/**
 * 获取当前用户信息
 * @returns {Promise} 用户信息
 */
export function getUserInfo() {
  return request({
    url: '/user/info',
    method: 'get'
  });
}

/**
 * 根据用户id获取用户信息
 * @param {number} userId 用户id
*/
export function getUserInfoById(userId) {
  return request({
    url:  `/user/findOneUser/${userId}`,
    method: 'get'
  });
}

/**
 * 更新用户信息
 * @param {Object} data 用户信息
 * @returns {Promise} 更新结果
 */
export function updateUserInfo(data) {
  return request({
    url: '/user/updateProfile',
    method: 'put',
    data
  });
}

/**
 * 退出登录
 * @returns {Promise} 退出结果
 */
export function logout() {
  return request({
    url: '/user/logout',
    method: 'post'
  });
}

/**
 * 修改密码
 * @param {Object} data 密码信息
 * @param {string} data.oldPassword 旧密码
 * @param {string} data.newPassword 新密码
 * @param {string} data.confirmPassword 确认新密码
 * @returns {Promise} 修改结果
 */
export function changePassword(data) {
  return request({
    url: '/user/password',
    method: 'put',
    data
  });
}

/**
 * 重置密码（忘记密码）
 * @param {Object} data 密码重置信息
 * @param {string} data.email 邮箱
 * @param {string} data.emailCode 邮箱验证码
 * @param {string} data.newPassword 新密码
 * @returns {Promise} 重置结果
 */
export function resetPassword(data) {
  return request({
    url: '/user/password/reset',
    method: 'post',
    data
  });
}

/**
 * 上传头像
 * @param {FormData} data 包含图片文件的 FormData
 * @returns {Promise} 上传结果，包含头像URL
 */
export function uploadAvatar(data) {
  return request({
    url: '/user/avatar',
    method: 'post',
    data,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  });
}